﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using e77.Ud2.HeadEnums;
using e77.Ud2;

// deklarálja a Controller és a mérőfej kommunikációjához szükséges függvényeket
namespace Szakdolgozat
{
    // a mérőfej és a PC közti parancsok deklarálása
    // csak azután lesznek kiküldve, hogy összefűzésre kerültek a fejjel, CRC-vel etc.
    // viszont paraméterek miatt külön metódusként van rájuk szükség
    public interface IHead
    {


        //byte[] HeadVersion();
        //byte[] GetHWInfo();
        //byte[] SetHWInfo(byte HWdetailLSB, byte HWdetailMSB);
        //byte[] HeadMeasure(byte LEDMask);
        //byte[] HeadFastMeasure(byte LEDMask);
        //byte[] HeadLEDOn(byte LEDMAsk);
        //byte[] HeadLEDOff();
        //byte[] HeadGetAllValues();
        //byte[] HeadGetAllValuesGain(byte Gain);
        //byte[] HeadMeasureGain(byte[] LEDMask_Gain);
        //byte[] HeadGetTemp();
        //byte[] HeadGetCRC();
        //byte[] HeadStripMove(byte[] Location);
        //byte[] HeadSrtipFind();
        //byte[] HeadStripMoveAbs(byte[] Location);
        //byte[] HeadStripMeasureDual(byte LEDMask);
        //byte[] HeadGetPassword();

        // küldés/fogadáshoz szükséges függvények, Receive-ben ellenőrizni kell, hogy a megfelelő rész ugyanaz-e, mint a küldött
        byte[] Send(ECommand command, params object[] parameters);
        byte[] Receive();
        // úgy zajlik a portválasztás, hogy HRinfó lekérést küld és a megfelelő válaszú COM port lesz a mérőfej
        string Portselect();
        // a Portselect() által visszaadott COM portra elvégzi a szükséges beállításokat
       void SerialPortSet(SerialPort serialport);
        // ezzel lehet megvizsgálni, a lekérdező parancsoknál teljesül-e, hogy ugyanazt kapja vissza
        bool QAequals(byte[] a, byte[] b);
        

    }
}
